#pragma once
#include "../GameObject.h"
#include <DirectXMath.h>
class Light :public GameObject
{
private:
	std::string m_lightType;
	DirectX::XMFLOAT4 m_ambient;
	DirectX::XMFLOAT4 m_diffuse;
	DirectX::XMFLOAT4 m_specular;
public:
	struct DirectionalLightStructure
	{
		DirectX::XMFLOAT4 ambient;
		DirectX::XMFLOAT4 diffuse;
		DirectX::XMFLOAT4 specular;
		DirectX::XMFLOAT3 direction;
		float pad;
	};
	struct PointLightStructure
	{
		DirectX::XMFLOAT4 ambient;
		DirectX::XMFLOAT4 diffuse;
		DirectX::XMFLOAT4 specular;
		DirectX::XMFLOAT3 position;
		float range;
		DirectX::XMFLOAT3 attenuation;
		float pad;
	};
	struct SpotLightStructure
	{
		DirectX::XMFLOAT4 ambient;
		DirectX::XMFLOAT4 diffuse;
		DirectX::XMFLOAT4 specular;
		DirectX::XMFLOAT3 position;
		float range;
		DirectX::XMFLOAT3 direction;
		float spot;
		DirectX::XMFLOAT3 attenuation;
		float pad;
	};
	Light(std::string lightType, std::vector<float>position, std::string name,std::vector<float>ambient,std::vector<float>diffuse,std::vector<float>specular);
	virtual ~Light();
	std::string GetLightType();
	DirectX::XMFLOAT4 GetAmbient();
	DirectX::XMFLOAT4 GetDiffuse();
	DirectX::XMFLOAT4 GetSpecular();
	void SetAmbient(std::vector<float>ambient);
	void SetDiffuse(std::vector<float>diffuse);
	void SetSpecular(std::vector<float>specular);
};